package com.bcu.cn.onlineexamsystem.grademanage.service;

import com.bcu.cn.onlineexamsystem.grademanage.entity.TeacherScoreAnalysisDTO;

import java.util.List;
import java.util.Map;

/**
 * 教师端成绩分析服务接口
 */
public interface TeacherScoreAnalysisService {
    
    /**
     * 获取成绩统计数据
     */
    TeacherScoreAnalysisDTO.ScoreStatistics getScoreStatistics();
    
    /**
     * 根据课程ID获取成绩统计数据
     */
    TeacherScoreAnalysisDTO.ScoreStatistics getScoreStatisticsByCourse(Long courseId);
    
    /**
     * 获取成绩趋势数据
     */
    TeacherScoreAnalysisDTO.ScoreTrend getScoreTrend();
    
    /**
     * 根据课程ID获取成绩趋势数据
     */
    TeacherScoreAnalysisDTO.ScoreTrend getScoreTrendByCourse(Long courseId);
    
    /**
     * 获取成绩分布数据
     */
    TeacherScoreAnalysisDTO.ScoreDistribution getScoreDistribution();
    
    /**
     * 根据课程ID获取成绩分布数据
     */
    TeacherScoreAnalysisDTO.ScoreDistribution getScoreDistributionByCourse(Long courseId);
    
    /**
     * 获取课程成绩分析
     */
    List<TeacherScoreAnalysisDTO.CourseScoreAnalysis> getCourseScoreAnalysis();
    
    /**
     * 获取学生成绩排名
     */
    List<TeacherScoreAnalysisDTO.StudentRanking> getStudentRanking();
    
    /**
     * 根据课程ID获取学生成绩排名
     */
    List<TeacherScoreAnalysisDTO.StudentRanking> getStudentRankingByCourse(Long courseId);
    
    /**
     * 获取最近考试记录
     */
    List<TeacherScoreAnalysisDTO.ExamRecord> getRecentExamRecords(Integer limit);
    
    /**
     * 根据课程ID获取最近考试记录
     */
    List<TeacherScoreAnalysisDTO.ExamRecord> getRecentExamRecordsByCourse(Long courseId, Integer limit);
    
    /**
     * 根据课程ID获取课程成绩分析详情
     */
    TeacherScoreAnalysisDTO.CourseScoreAnalysis getCourseDetailAnalysis(Long courseId);
    
    /**
     * 根据考试ID获取考试详情
     */
    List<TeacherScoreAnalysisDTO.ExamRecord> getExamDetail(Long examId);
    
    /**
     * 获取教师的所有课程列表
     */
    List<Map<String, Object>> getTeacherCourses(String teacherId);
} 